package cn.weiron.fun.infrastructure;


import cn.weiron.fun.infrastructure.auth.Authority;
import cn.weiron.fun.infrastructure.dto.LoggedAccountDto;

import java.util.Optional;

/**
 * <p>基础层：登录处理仓储接口</p>
 *
 * @author 马强
 */
public interface AccountLoginRepository {
    /**
     * 向缓存中存储当前数据，并返回存储后的数据
     */
    Optional<LoggedAccountDto> store(Authority.Account account);

    /**
     * @return 验证指定数据是否存在，存在则返回存在的数据；不存在则返回空
     */
    Optional<LoggedAccountDto> exist(String token);

    /**
     * @return 验证指定数据是否存在，存在则返回存在的数据；不存在则返回空
     */
    Optional<LoggedAccountDto> exist(LoggedAccountDto account);

    /**
     * @return 清除指定数据，存在则返回已清除的数据；不存在则返回空
     */
    Optional<LoggedAccountDto> clear(LoggedAccountDto account);
}